#include <iostream>
#include <vector>
#include <stack>
using namespace std;
#define INT_MAX 2e32;

class MinStack {
public:
    stack<long> s;
    vector<long> sorted;
    long min;
    MinStack() {
        min = INT_MAX;
    }
    
    void push(int val) {
        s.push(val);
        if (val < min) {
            min = val;
            sorted.push_back(val);
        }
        else{
            for(int i=0;i<sorted.size();i++)
            {
                if (val < sorted[i]) {
                    sorted.insert(sorted.begin()+i, val);
                    break;
            }
        }
        }
    }
    
    void pop() {
        if(s.top()==min)
        {
            sorted.pop_back();
            min = sorted.back();
        }
        s.pop();
    }
    
    int top() { 
        return s.top();
    }
    
    int getMin() {
        return min;
    }
};
int main()
{
    MinStack s;
    s.push(1);
    s.push(2);
    s.push(3);
    cout<<s.getMin()<<endl;
    s.push(-1);
    cout<<s.getMin()<<endl;
}